package Model;

import java.awt.Color;
import java.util.ArrayList;
import java.util.Random;

import Control.Kontroller;


/**
 * 
 * Amíg jelen van a játéktéren teljesen véletlenszerűen mozog.
 * Ha hangyával találkozik azt megeszi, adott számú hangya megevése után eltűnik, majd bizonyos idő eltelte után megéhezik és visszatér a játéktérre.
 *
 */

public class HangyaszSun extends MozgoDinEntitas
{
	/** Tárolja hogy a Hangyászsün éppen a pályán tartózkodik-e. */
	public boolean aktiv;
	/** A legutolsó pályaelhagyás óta eltelt idő. */
	private int inaktivIdo;
	/** Tárolja, hogy az utolsó pályára lépés óta hány Hangyát evett meg. */
	public int megevett;
	
	/**
	 * A Hangyászsün osztály paraméteres konstruktora.
	 * @param ny Referencia egy INyilvántartó interfészt megvalósító objektumra.
	 */
	public HangyaszSun(INyilvantarto ny)
	{
		super(ny);
		aktiv = true;
		inaktivIdo = 0;
		megevett = 0;
		color = Color.PINK;
	}

	/**
	 * A paraméterben kapott Hangyát megöli.
	 * @param hangya Egy Hangya objektum.
	 */
	public void ittVan(Hangya hangya)
	{
		hangya.meghal();
	}

	/**
	 * Véletlenszerűen lép, és tájékoztatja a Mezőn állókat a jelenlétéről.
	 */
	public void tick()
	{
		if(!aktiv)
		{
			if(inaktivIdo < 9) inaktivIdo++;
			else
			{
				aktiv = true;
				megevett = 0;
				inaktivIdo = 0;
				holvagyok.rarak(this);
			}
		}
		else
		{
			Random random = new Random();
			if((random.nextInt(100) < 30) && (megevett > 1))
			{//legalabb kettot megevett, levesszuk a palyarol
				aktiv = false;
				holvagyok.levesz(this);
			}
			else
			{//aktiv marad, beallitjuk a kovetkezo mezot, es ittVan-t hivunk a mostani mezore
				ArrayList<Mezo> szomszedok = holvagyok.getSzomszedok();

				if(Kontroller.veletlenEsemenyek)
					kovetkezoMezo = szomszedok.get(random.nextInt(6));
				else kovetkezoMezo = szomszedok.get(0);
					
				if(kovetkezoMezo != null)
				{
					kovetkezoMezo.ittVan(this);
					lep();
				}
			}
		}
	}
	
	public String kiir()
	{
		return "HS(" + azonosito + ")";
	}
}